package com.ungs.dao.impl;

import java.util.ArrayList;
import java.util.List;

import org.hibernate.Criteria;
import org.hibernate.HibernateException;
import org.hibernate.criterion.Restrictions;

import com.ungs.dao.FormatoPapelDAO;
import com.ungs.entities.FormatoPapel;

public class FormatoPapelDAOImpl extends EntidadDAOImpl<FormatoPapel> implements
		FormatoPapelDAO {

	@SuppressWarnings("unchecked")
	@Override
	public List<FormatoPapel> getFormatoPapelByMedidas(int ancho, int alto,
			boolean todos) throws HibernateException {
		List<FormatoPapel> formatoPapelList = new ArrayList<FormatoPapel>();

		logger.info("Obteniendo formato papel por medidas");
		try {
			iniciaConexion();
			Criteria criteria = getSession().createCriteria(FormatoPapel.class);

			if (ancho != 0) {
				criteria.add(Restrictions.eq("ancho", ancho));
			}

			if (alto != 0) {
				criteria.add(Restrictions.eq("alto", alto));
			}

			if (!todos) {
				criteria.add(Restrictions.eq("estadoLogico", "A"));
			}

			formatoPapelList = criteria.list();

		} catch (HibernateException he) {
			logger.error("Error al traer los formatos de papel por medidas: "
					+ FormatoPapel.class + "DAO");
			manejaExcepcion(he);
			throw he;
		} finally {
			getSession().close();
		}

		return formatoPapelList;
	}

}
